package in.data.annotation; import android.location.Location; import android.os.Parcel; import android.os.Parcelable; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.util.List; import in.lib.utils.Debug; import in.lib.utils.SerialReaderUtil; import in.lib.utils.SerialWriterUtil; import in.model.base.Model; import lombok.Data; @Data public class LocationAnnotation extends Annotation { protected double lat = 0.0, lng = 0.0; protected float accuracy = Float.MIN_VALUE; protected long time = 0L; public LocationAnnotation() { } public LocationAnnotation(Location l) { if (l != null) { lat = l.getLatitude(); lng = l.getLongitude(); accuracy = l.getAccuracy(); time = l.getTime(); } } public boolean hasAccuracy() { return accuracy > Float.MIN_VALUE; } @Override public LocationAnnotation createFrom(JsonElement element) { return null; } @Override public LocationAnnotation createFrom(Parcel parcel) { super.createFrom(parcel); return this; } @Override public List<? extends Model> createListFrom(JsonElement element) { return null; } @Override public String getVersion() { return "dc32493e-6bb7-4566-91c8-470ebc5d9352"; } @Override public LocationAnnotation read(SerialReaderUtil util) { if (super.read(util) != null) { try { String version = util.readString(); if (!version.equals(getVersion())) return null; lat = util.readDouble(); lng = util.readDouble(); accuracy = util.readFloat(); time = util.readLong(); return this; } catch (Exception e) { Debug.out(e); } } return null; } @Override public void write(SerialWriterUtil util) { super.write(util); try { util.writeString(getVersion()); util.writeDouble(lat); util.writeDouble(lng); util.writeFloat(accuracy); util.writeLong(time); } catch (Exception e) { Debug.out(e); } } @Override public JsonElement toAnnotation() { JsonObject object = new JsonObject(); JsonObject values = new JsonObject(); values.addProperty("latitude", getLat()); values.addProperty("longitude", getLng()); object.addProperty("type", getAnnotationKey()); object.add("value", values); return object; } @Override public String getAnnotationKey() { return "net.app.core.geolocation"; } public static final Parcelable.Creator<LocationAnnotation> CREATOR = new Creator<LocationAnnotation>() { @Override public LocationAnnotation[] newArray(int size) { return new LocationAnnotation[size]; } @Override public LocationAnnotation createFromParcel(Parcel source) { return new LocationAnnotation().createFrom(source); } }; }